本篇延續系列文 Day 13 搭建好 Python 的 Flask 服務,此時你的 LINE Channel 需要設定 Webhook 才能連動。在我們將程式佈署在雲端伺服器 Heroku 之前,先透過 ngrok 索取一個臨時連結來測試服務吧!
安裝及執行 ngrok
ngrok http 5000
即可開啟服務。
$ ngrok http 5000
https://{一串亂碼}.ap.ngrok.io
,等等用來建立 webhook 用。建立 Webhook
網址
+\callback
,像是https://{一串亂碼}.ap.ngrok.io/callback
這樣按upload。
\callback
是對應您的 Python 程式@app.route("/callback", methods=['POST'])
這段描述,讓兩者相同作為互動通道。
app.run('debug=True')
開啟了除錯模式,可以看的到來自 LINE 傳來的請求內容,是個以大括號{}
包起來的JSON物件(Object),接著我們就在請求內找到對應的 user_id
,發現在 event
的 suorce
的 usrID
裡,這串字就是我們要找的!handle_message()
,增加一段如果 event.source.user_id == {前面收到在 LINE 按 verify 時回傳的 user_id}
,兩者相同時回傳 OK。
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.source.user_id =='Udeadbeefdeadbeefdeadbeefdeadbeef': #填入line在verify時回傳的user_id
return 'OK'
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
handle_message()
。app.py
是在執行狀態( Flask 伺服器開啟中),終端機顯示 http://127.0.0.1:5000/ 字樣,尚未按 Ctrl + C
中斷。ngrok http 5000
後方增列--region=ap
,即以 ngrok 的亞洲伺服器啟用此服務。
$ ngrok http 5000 --region=ap